package leetcode.trie.p211;

import java.util.TreeMap;
/**
 * 
 * @Title: WordDictionary.java 
 * @Package leetcode.trie.p211 
 * @Description: 211. 添加与搜索单词 - 数据结构设计
 *                  非递归实现
 * @author CandyWall   
 * @date 2021年1月10日 下午8:32:14 
 * @version V1.0
 */
public class WordDictionary2 {
    private class Node {
        public boolean isWord;
        TreeMap<Character, Node> next;

        public Node() {
            this.isWord = false;
            this.next = new TreeMap<>();
        }
    }

    private Node root;

    /** Initialize your data structure here. */
    public WordDictionary2() {
        root = new Node();
    }

    /** Adds a word into the data structure. */
    public void addWord(String word) {
        Node cur = root;
        for (int i = 0; i < word.length(); i++) {
            char c = word.charAt(i);
            if (!cur.next.containsKey(c)) {
                cur.next.put(c, new Node());
            }
            cur = cur.next.get(c);
        }
        cur.isWord = true;
    }

    /**
     * Returns if the word is in the data structure. A word could contain the
     * dot character '.' to represent any one letter.
     */
    public boolean search(String word) {
        Node cur = root;
        /*for (int i = 0; i < word.length(); i++) {
            char c = word.charAt(i);
            // 包含'.'特殊处理
            if (c == '.') {
                
                // 遍历当前cur的next映射
                for(Entry<Character, Node> entry : cur.next.entrySet()) {
                    
                }
            } else {
                if (!cur.next.containsKey(c)) {
                    return false;
                }
                cur = cur.next.get(c);
            }
        }*/
        return false;
    }
}